package com.doubao.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
@TableName("smart_device")
public class SmartDevice extends BaseEntity {
    /**
     * 智能体ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 创建者用户ID
     */
    private Long userId;

    /**
     * 智能体名称，2-64字符
     */
    @NotBlank(message = "智能体名称不能为空")
    @Size(min = 2, max = 64, message = "智能体名称长度必须在2-64之间")
    private String name;

    /**
     * 智能体头像URL
     */
    private String icon;

    /**
     * 智能体详细描述
     */
    @Size(max = 500, message = "描述不能超过500字")
    private String description;

    /**
     * 豆包模型ID，默认使用doubao-pro-32k
     */
    @TableField("model_endpoint_id")
    private String modelEndpointId = "doubao-pro-32k";

    /**
     * 系统提示词，用于定制AI行为
     */
    @TableField("system_prompt")
    private String systemPrompt;

    /**
     * 可见性：0-私密，1-公开
     */
    private Integer visibility;

    /**
     * 类型：0-用户创建，1-系统预设
     */
    private Integer type;

    /**
     * 分类，如：助手、导师、翻译等
     */
    private String category;

    /**
     * 标签，JSON数组存储
     */
    private String tags;

    /**
     * 收藏数
     */
    @TableField("collect_count")
    private Integer collectCount;

    /**
     * 对话数
     */
    @TableField("chat_count")
    private Integer chatCount;

    /**
     * 当前用户是否收藏：0-未收藏，1-已收藏
     */
    @TableField("is_collected")
    private Integer isCollected;

    /**
     * 逻辑删除标志：0-未删除，1-已删除
     */
    @TableLogic
    private Integer deleted;

    /**
     * 非数据库字段：标签列表
     */
    @TableField(exist = false)
    private List<String> tagList;
}

